/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package entidad;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;

/**
 *
 * @author tuareg
 */
@Entity
public class Empleado implements Serializable {

    public Empleado() {
    }

    public Empleado(String cedula){
	    this.cedula=cedula;
    }
    public Cargo getCargoAsociado() {
        return cargoAsociado;
    }

    public void setCargoAsociado(Cargo cargoAsociado) {
        this.cargoAsociado = cargoAsociado;
    }

    public String getCedula() {
        return cedula;
    }

    public void setCedula(String cedula) {
        this.cedula = cedula;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public List<Falla> getFallas() {
        List<Falla> fallasTMP = new ArrayList<Falla>(fallas);
        return fallasTMP;
    }

    public void setFallas(List<Falla> fallas) {
        this.fallas = new HashSet<Falla>(fallas);
    }

    public List<HoraExtra> getHorasExtra() {
        List<HoraExtra> horasExtraTMP =  new ArrayList<HoraExtra>(horasExtra);
        return horasExtraTMP;
    }

    public void setHorasExtra(List<HoraExtra> horasExtra) {
        this.horasExtra = new HashSet<HoraExtra>(horasExtra);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public float getPorcentajeSalarioBas() {
        return porcentajeSalarioBas;
    }

    public void setPorcentajeSalarioBas(float porcentajeSalarioBas) {
        this.porcentajeSalarioBas = porcentajeSalarioBas;
    }

    public String getProfesion() {
        return profesion;
    }

    public void setProfesion(String profesion) {
        this.profesion = profesion;
    }

    public long getTelefono() {
        return telefono;
    }

    public void setTelefono(long telefono) {
        this.telefono = telefono;
    }


    public String getEPS() {
        return EPS;
    }

    public void setEPS(String EPS) {
        this.EPS = EPS;
    }

    public List<Bono> getBonos() {
        List<Bono> bonosTMP = new ArrayList<Bono>(bonos);
        return bonosTMP;
    }

    public void setBonos(List<Bono> bonos) {
        this.bonos= new HashSet<Bono>(bonos);
    }

    public Calendar getFechaDeModificacion(){
        return fechaDeModificacion;
    }


    public void setFechaDeModificacion(Calendar fechaDeModificacion) {
        this.fechaDeModificacion = fechaDeModificacion;
    }


    public CambiosEmpleado getCambiosEmpleado() {
        return cambiosEmpleado;
    }

    public void setCambiosEmpleado(CambiosEmpleado cambiosEmpleado) {
        this.cambiosEmpleado = cambiosEmpleado;
    }

    public Empleado(String nombre, String cedula, long telefono, String direccion,
                    String profesion, String estado, float porcentajeSalarioBas,
                    Cargo cargoAsociado,String EPS,Calendar fechaDeCreacion) {
        this.nombre = nombre;
        this.cedula = cedula;
        this.telefono = telefono;
        this.direccion = direccion;
        this.profesion = profesion;
        this.estado = estado;
        this.porcentajeSalarioBas = porcentajeSalarioBas;
        this.cargoAsociado = cargoAsociado;
        this.EPS=EPS;
        this.fechaDeModificacion=fechaDeCreacion;
    }

    public long getID() {
        return ID;
    }

    public void setID(long ID) {
        this.ID = ID;
    }

	public boolean isUltimaVersion() {
		return ultimaVersion;
	}

	public void setUltimaVersion(boolean ultimaVersion) {
		this.ultimaVersion = ultimaVersion;
	}

	
    
    private String nombre;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long ID;
    private String cedula;
    private long telefono;
    private String direccion;
    private String profesion;
    private String estado;
    private float porcentajeSalarioBas;
    @ManyToOne
    private Cargo cargoAsociado;
    private String EPS;
    @OneToMany (mappedBy="empAsociado",fetch= FetchType.EAGER) 
    private Set<Falla> fallas = new HashSet<Falla>();
    @OneToMany (mappedBy="empAsociado",fetch= FetchType.EAGER) 
    private Set<HoraExtra> horasExtra = new HashSet<HoraExtra>();
    @OneToMany(mappedBy="empAsociado",fetch= FetchType.EAGER) 
    private Set<Bono> bonos = new HashSet<Bono>();
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar fechaDeModificacion;    
    @ManyToOne
    private CambiosEmpleado cambiosEmpleado;
    private boolean ultimaVersion=false;
}
